package bankQueue;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class Bank{
	public static void main(String...gio){
		int limit=20;
		int A=0,B=0,C=0;//cajeros y tiempos
		int clientes=5;//5 clientes que llegan
		ArrayList<Transaction>transacciones=new ArrayList<Transaction>();
		ArrayList<Transaction>filaNormal=new ArrayList<Transaction>();
		ArrayList<Transaction>filaVIP=new ArrayList<Transaction>();
		for(int i=0;i<clientes;i++)
			transacciones.add(new Transaction(i,Math.random()*10>7,(int)(Math.random()*3),(int)(Math.random()*limit)));
		for(int i=0;i<clientes;i++)
			System.out.println("Cliente "+transacciones.get(i).getPersonID()+" arrived at  "+timeToString(transacciones.get(i).getArrival_time()));
		Collections.sort(transacciones, new Comparator<Transaction>() {
		    public int compare(Transaction o1,Transaction o2){
				return Integer.signum(o1.getArrival_time()-o2.getArrival_time());
			}
		});System.out.println();
		for(int i=0;i<clientes;i++)
			System.out.println("Cliente "+transacciones.get(i).getPersonID()+" arrived at  "+timeToString(transacciones.get(i).getArrival_time()));
		for(int i=0;i<limit;i++){
			if(A>0)A--;if(B>0)B--;if(C>0)C--;
			//if()
			while(transacciones.get(0).getArrival_time()==i){
				if(A==0){//si esta libre
					A=TransactionType.getTime(transacciones.get(0).getTransaction());//asigno el tiempo a caseta A
					transacciones.remove(0);
				}else if(B==0){
					B=TransactionType.getTime(transacciones.get(0).getTransaction());
					transacciones.remove(0);
				}else if(C==0){
					C=TransactionType.getTime(transacciones.get(0).getTransaction());
					transacciones.remove(0);
				}else{
					if(transacciones.get(0).isVIP())
						filaVIP.add(transacciones.get(0));
					else
						filaNormal.add(transacciones.get(0));
					transacciones.remove(0);
				}
			}
		}
	}
	public static String timeToString(int i){
		return (i/60+9)+":"+((i-i/60*60)<10?"0":"")+(i-i/60*60)+" hrs";
	}
}